package com.expert.miniapp.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 推荐项详细信息DTO
 * 包含推荐项基本信息、用户信息和需求信息
 *
 * @author System
 * @since 2025-11-06
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RecommendationItemDetailDTO {

    /**
     * 推荐项ID
     */
    @JsonProperty("itemId")
    private String itemId;

    /**
     * 资源类型
     */
    @JsonProperty("resourceType")
    private String resourceType;

    /**
     * 资源ID
     */
    @JsonProperty("resourceId")
    private String resourceId;

    /**
     * 推荐理由
     */
    @JsonProperty("reason")
    private String reason;

    /**
     * 用户信息
     */
    @JsonProperty("user")
    private UserInfo user;

    /**
     * 需求信息
     */
    @JsonProperty("demand")
    private DemandInfo demand;

    /**
     * 用户信息内部类
     */
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class UserInfo {
        /**
         * 用户ID
         */
        @JsonProperty("userId")
        private String userId;

        /**
         * 用户昵称
         */
        @JsonProperty("nickname")
        private String nickname;

        /**
         * 用户头像URL
         */
        @JsonProperty("avatarUrl")
        private String avatarUrl;
    }

    /**
     * 需求信息内部类
     */
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DemandInfo {
        /**
         * 需求ID
         */
        @JsonProperty("demandId")
        private String demandId;

        /**
         * 研究目标
         */
        @JsonProperty("researchObjective")
        private String researchObjective;
    }
}
